<?php
App::uses('AppController','Controller');
class OrdenesTrabajoController extends AppController {

	var $uses = array('OrdenTrabajo','OrdenTrabajoDetalle','Cliente','Vehiculo','CatalogoDetalle','SistemaParametro');
	var $components = array('Constantes');
	
	function beforeFilter(){
		if(!$this->Session->check('usuarioSesionSOT')){
			$this->redirect(array('controller'=>'Seguridad','action'=>'login'));
		}else{
			$this->set('usuarioSesionSOT',$this->Session->read('usuarioSesionSOT'));
		}
	}
	
	public function index(){
        $this->redirect(array('controller'=>'OrdenesTrabajo','action'=>'consultar_ordenes'));
    }
    
    public function consultar_ordenes(){
    	
    	$this->layout = 'plantillaPrincipal';
    	$this->set('title_for_layout', '::&Oacute;rdenes de Trabajo::');
    	
    	//Cargar los combos
    	$this->fn_cargarCombos();
    	
    	//Buscar las ordenes de trabajo
    	$idCliente = (isset($this->request->data['idCliente']))?$this->request->data['idCliente']:"";
    	$rucDni = (isset($this->request->data['rucDni']))?$this->request->data['rucDni']:"";
    	$numeroPlaca = (isset($this->request->data['numeroPlaca']))?$this->request->data['numeroPlaca']:"";
    	$nroOrden = (isset($this->request->data['nroOrden']))?$this->request->data['nroOrden']:"";
    	$idMarcaVehiculo = (isset($this->request->data['idMarcaVehiculo']))?$this->request->data['idMarcaVehiculo']:"";
    	$modelo = (isset($this->request->data['modelo']))?$this->request->data['modelo']:"";

    	$condiciones = array();
    	$condiciones["idCliente"] = $idCliente;
    	$condiciones["rucDni"] = $rucDni;
    	$condiciones["numeroPlaca"] = $numeroPlaca;
    	$condiciones["nroOrden"] = $nroOrden;
    	$condiciones["idMarcaVehiculo"] = $idMarcaVehiculo;
    	$condiciones["modelo"] = $modelo;
    	
    	$this->set("condiciones",$condiciones);
    	
    	$ordenesArrayJSON = $this->fn_buscar_ordenes_json($condiciones);
    	$this->set('ordenesArrayJSON',$ordenesArrayJSON);
    	
        //Tomar el mensaje de accion si es que existiese
    	if($this->Session->check('msjRegistroOrden')){
     		$this->set('msjRegistroOrden',$this->Session->read("msjRegistroOrden"));
			$this->Session->delete('msjRegistroOrden');
    	}
    	
    }
    
    public function nueva_orden(){
    	$this->layout = 'plantillaPrincipal';
    	$this->set('title_for_layout', '::&Oacute;rdenes de Trabajo::');
    	
    	$this->fn_cargarCombos();
    }
    
    public function guardar_orden(){
    	
    	$this->layout = 'plantillaPrincipal';
    	
    	//Tomar los datos
    	if(isset($this->request->data)){
    		
    		$usuarioSesionSOT = $this->Session->read('usuarioSesionSOT');
  			$usuarioRegistro = $usuarioSesionSOT["Usuario"]["idUsuario"];
    		$fechaRegistro = date_create()->format('Y-m-d H:i:s');
    		
    		$dataSource = $this->OrdenTrabajo->getDataSource();
    		
    		$dataSource->begin();

    		$data = $this->request->data["OrdenTrabajo"];
    		
    		//Verificar el id , si esta vacio se solicita a la BD
    		$idOrden = "";
    		if(isset($data["idOrden"])){
    			if($data["idOrden"] != ""){
    				$idOrden = $data["idOrden"];
    			}
    		}
    		
    		$correlativo = "";
    		$nroOrden = "";
    		$anulado = "";
    		if($idOrden == ""){
    			$prefijo = "ORD";
    			
    			$longitudPrefijo = strlen($prefijo);
    			$longitudCorrelativo = 8;
    			$longitudNroOrden = 8;
    			
    			//Calcular el id y el nro de orden
    			$rs = $this->OrdenTrabajo->query("select (ifnull(convert((select substring(max(idOrden),".($longitudPrefijo+1).",".$longitudCorrelativo.") from OrdenesTrabajo),decimal),0)+1) as 'correlativo',
    													 (ifnull(convert((select max(nroOrden) from OrdenesTrabajo),decimal),0)+1) as 'nroOrden'");
    			$correlativo = $rs[0][0]["correlativo"];
    			$nroOrden = $rs[0][0]["nroOrden"];

    			while(strlen($correlativo)<($longitudCorrelativo)){
    				$correlativo = "0".$correlativo;
    			}
    			
    			$correlativo = $prefijo.$correlativo;

    			while(strlen($nroOrden)<($longitudNroOrden)){
    				$nroOrden = "0".$nroOrden;
    			}

    			$objOrden["OrdenTrabajo"]["idUsuarioCreacion"] = $usuarioRegistro;
    			$objOrden["OrdenTrabajo"]["fechaCreacion"] = $fechaRegistro;
    			$anulado = "N";
    		}else{
    			$correlativo = $data["idOrden"];

    			$objOrden = $this->OrdenTrabajo->find('first',array('conditions' => array('OrdenTrabajo.idOrden' =>$correlativo)));
    			$objOrden["OrdenTrabajo"]["idUsuarioModifica"] = $usuarioRegistro;
    			$objOrden["OrdenTrabajo"]["fechaModifica"] = $fechaRegistro;
    			
    			$nroOrden = $objOrden["OrdenTrabajo"]["nroOrden"];
    			$anulado = $objOrden["OrdenTrabajo"]["anulado"];
    		}
    		
    		//Preparar los datos
    		$objOrden["OrdenTrabajo"]["idOrden"] = $correlativo;
    		$objOrden["OrdenTrabajo"]["nroOrden"] = $nroOrden;
    		
    		$idComprobanteCatalogo = $this->Constantes->TIPOS_COMPROBANTES;
    		$idComprobanteItem = $data["idComprobanteItem"];
    		if($idComprobanteItem == ""){
    			$idComprobanteCatalogo = null;
    			$idComprobanteItem = null;
    		}
    		
    		$objOrden["OrdenTrabajo"]["idComprobanteCatalogo"] = $idComprobanteCatalogo;
    		$objOrden["OrdenTrabajo"]["idComprobanteItem"] = $idComprobanteItem;
    		
    		$nroComprobante = $data["nroComprobante"];
    		if($nroComprobante == ""){
    			$nroComprobante = null;
    		}
    		$objOrden["OrdenTrabajo"]["nroComprobante"] = $nroComprobante;
    		
  			$objOrden["OrdenTrabajo"]["idCliente"] = $data["idCliente"];
  			$objOrden["OrdenTrabajo"]["idVehiculo"] = $data["idVehiculo"];
  			
  			if($data["kmVehiculo"]!="" && $data["kmVehiculo"]!="."){
  				$objOrden["OrdenTrabajo"]["kmVehiculo"] = $data["kmVehiculo"];
  			}else{
  				$objOrden["OrdenTrabajo"]["kmVehiculo"] = 0;
  			}
  			
  			$objOrden["OrdenTrabajo"]["fechaServicio"] = $data["fechaServicio"];
  			$objOrden["OrdenTrabajo"]["observaciones"] = utf8_decode($data["observaciones"]);
  			
  			if($data["precioServicio"]!="" && $data["precioServicio"]!="."){
  				$objOrden["OrdenTrabajo"]["precioServicio"] = $data["precioServicio"];
  			}else{
  				$objOrden["OrdenTrabajo"]["precioServicio"] = 0;
  			}
  			
    		if($data["igvServicio"]!="" && $data["igvServicio"]!="."){
  				$objOrden["OrdenTrabajo"]["igvServicio"] = $data["igvServicio"];
  			}else{
  				$objOrden["OrdenTrabajo"]["igvServicio"] = 0;
  			}
  			
    		if($data["totalServicio"]!="" && $data["totalServicio"]!="."){
  				$objOrden["OrdenTrabajo"]["totalServicio"] = $data["totalServicio"];
  			}else{
  				$objOrden["OrdenTrabajo"]["totalServicio"] = 0;
  			}
  			
  			$objOrden["OrdenTrabajo"]["anulado"] = $anulado;

    		if ($this->OrdenTrabajo->save($objOrden)) {

    			//Confirmar el cambio de la cabecera
    			$dataSource->commit();
    			
	    		//Datos de los trabajos realizados
	  			$jsonTrabajosRealizados = json_decode($data["jsonTrabajosRealizados"],true);

	  			$i = 0;
	  			$dimTrabajosRealizados = count($jsonTrabajosRealizados);
	  			
	  			$errorRegistroDetalle = false;
	  			
	  			//Generar el primer id
	  			$rs = $this->OrdenTrabajoDetalle->query("select (ifnull(convert((select max(idOrdenTrabajoDetalle) from OrdenesTrabajoDetalles where idOrdenTrabajo = '".$correlativo."'),decimal),0)+1) as 'idSecuencialDetalle'");
	  			$idSecuencialDetalle = $rs[0][0]["idSecuencialDetalle"];
	  			
	  			while($i<$dimTrabajosRealizados && !$errorRegistroDetalle){
	  				
	  				$objTrabajoDetalleJSON = $jsonTrabajosRealizados[$i];
	  				
	  				$indicadorDB = $objTrabajoDetalleJSON["indicadorDB"];
	  				
	  				if($indicadorDB == "1"){

	  					$dataSource->begin();
	  					
	  					$idOrdenTrabajoDetalle = $objTrabajoDetalleJSON["idOrdenTrabajoDetalle"];
	  					
	  					$objTrabajoDetalle = array();
	  					
	  					//Obtener la orden de la bd
	  					if($idOrdenTrabajoDetalle != ""){
	  						$objTrabajoDetalle = $this->OrdenTrabajoDetalle->find('first',array('conditions' => array('OrdenTrabajoDetalle.idOrdenTrabajo' => $correlativo,
	  																									   	   'OrdenTrabajoDetalle.idOrdenTrabajoDetalle' => $idOrdenTrabajoDetalle)));
	  					}

	  					if(count($objTrabajoDetalle) == 0){
	  						$objTrabajoDetalle = array();
	  					}
	  					
	  					$objTrabajoDetalle["OrdenTrabajoDetalle"]["idOrdenTrabajo"] = $objOrden["OrdenTrabajo"]["idOrden"];
	  					
	  					//Verificar el id del detalle
	  					if($idOrdenTrabajoDetalle!=""){
	  						$objTrabajoDetalle["OrdenTrabajoDetalle"]["idOrdenTrabajoDetalle"] = $idOrdenTrabajoDetalle;
	  					}else{
	  						//Generar el id
	  						$correlativoDetalle = $idSecuencialDetalle;

   							$longitudCorrelativoDetalle = 4;
			    			while(strlen($correlativoDetalle)<($longitudCorrelativoDetalle)){
			    				$correlativoDetalle = "0".$correlativoDetalle;
			    			}
			    			
			    			$objTrabajoDetalle["OrdenTrabajoDetalle"]["idOrdenTrabajoDetalle"] = $correlativoDetalle;
			    			$idSecuencialDetalle = $idSecuencialDetalle + 1;
	  					}
	  					
		  				$objTrabajoDetalle["OrdenTrabajoDetalle"]["descripcionTrabajo"] = utf8_decode($objTrabajoDetalleJSON["descripcionTrabajo"]);
		  				$objTrabajoDetalle["OrdenTrabajoDetalle"]["costoTrabajo"] = $objTrabajoDetalleJSON["costoTrabajo"];
		  				
		  				if($idOrdenTrabajoDetalle == ""){
		  					$objTrabajoDetalle["OrdenTrabajoDetalle"]["idUsuarioCreacion"] = $usuarioRegistro;
    						$objTrabajoDetalle["OrdenTrabajoDetalle"]["fechaCreacion"] = $fechaRegistro;
		  				}else{
		  					$objTrabajoDetalle["OrdenTrabajoDetalle"]["idUsuarioModifica"] = $usuarioRegistro;
    						$objTrabajoDetalle["OrdenTrabajoDetalle"]["fechaModifica"] = $fechaRegistro;
		  				}

		  				//Borrar para volver a registrar
		  				$condicionesBorrado = array();
		  				$condicionesBorrado["OrdenTrabajoDetalle.idOrdenTrabajo"] = $objTrabajoDetalle["OrdenTrabajoDetalle"]["idOrdenTrabajo"];
		  				$condicionesBorrado["OrdenTrabajoDetalle.idOrdenTrabajoDetalle"] = $objTrabajoDetalle["OrdenTrabajoDetalle"]["idOrdenTrabajoDetalle"];
		  				
		  				if($this->OrdenTrabajoDetalle->deleteAll($condicionesBorrado, false)){
			  				if ($this->OrdenTrabajoDetalle->save($objTrabajoDetalle)){
			  					$dataSource->commit();
			  				}else{
			  					$dataSource->rollback();
			  				}
		  				}else{
		  					$dataSource->rollback();
		  				}
	  				}
	
	  				$i = $i + 1;
	  			}
	  			
	  			//Datos de los trabajos eliminados
    			$jsonTrabajosRealizadosEliminados = json_decode($data["jsonTrabajosRealizadosEliminados"],true);
    			
    			$i = 0;
    			$dimTrabajosEliminados = count($jsonTrabajosRealizadosEliminados);

    			while($i<$dimTrabajosEliminados){
    				
    				$objJSON = $jsonTrabajosRealizadosEliminados[$i];
    				
    				if($objJSON["idOrdenTrabajoDetalle"] != ""){
    					
    					$dataSource->begin();
    					
    					$condicionesBorrado = array();
		  				$condicionesBorrado["OrdenTrabajoDetalle.idOrdenTrabajo"] = $objOrden["OrdenTrabajo"]["idOrden"];
		  				$condicionesBorrado["OrdenTrabajoDetalle.idOrdenTrabajoDetalle"] = $objJSON["idOrdenTrabajoDetalle"];
		  				
		  				if($this->OrdenTrabajoDetalle->deleteAll($condicionesBorrado,false)){
		  					$dataSource->commit();
		  				}else{
		  					$dataSource->rollback();
		  				}
		  				
    				}
    				$i = $i + 1;
    			}

    			//Preparar el mensaje de respuesta
  				if($idOrden == ""){
  					$this->Session->write('msjRegistroOrden',"Se registr&oacute; la orden ".$nroOrden." exitosamente");
  				}else{
  					$this->Session->write('msjRegistroOrden',"Se actualiz&oacute; la orden ".$nroOrden." exitosamente");
  				}

  				$this->redirect(array('controller'=>'OrdenesTrabajo','action'=>'editar_orden',"?" => array("idOrden" => $correlativo)));
  			}else{
  				if($idOrden == ""){
  					$this->Session->write('msjRegistroOrden',"No se pudo registrar la orden ".$nroOrden);
  				}else{
  					$this->Session->write('msjRegistroOrden',"No se pudo actualizar la orden ".$nroOrden);
  				}
  				$dataSource->rollback();
  				$this->redirect(array('controller'=>'OrdenesTrabajo','action'=>'consultar_ordenes'));
  			}
    	}else{
    		$this->redirect(array('controller'=>'OrdenesTrabajo','action'=>'consultar_ordenes'));
    	}
    }
    
    public function verificar_orden(){
    	$this->set('verificar',true);
    	$this->editar_orden();
    }
    
    public function editar_orden(){
    	
    	$this->layout = 'plantillaPrincipal';
    	$this->set('title_for_layout', '::&Oacute;rdenes de Trabajo::');
    	
    	if(isset($this->request->query['idOrden'])){
    		$idOrden = $this->request->query['idOrden'];
    	
    		$objOrden = $this->OrdenTrabajo->find('first',array('conditions' => array('OrdenTrabajo.idOrden' => $idOrden),'recursive' => 2));
    
    		if(count($objOrden)>0){
    			
    			//Traer los detalles
    			$contidions = array();
    			$conditions["OrdenTrabajoDetalle.idOrdenTrabajo"] = $idOrden;
    			$ordenDetalles = $this->OrdenTrabajoDetalle->find('all',array('conditions'=>$conditions,'order'=>'OrdenTrabajoDetalle.idOrdenTrabajoDetalle asc'));
    			
    			//Pasar los detalles a JSON
    			$i = 0;
				$dim = count($ordenDetalles);
		    	$ordenDetallesArrayJSON = array();
				while($i<$dim){
					$objOrdenDetalle = $ordenDetalles[$i];	
		 			$ordenDetallesJSON = array();
					$ordenDetallesJSON["idOrdenTrabajoDetalle"] = $objOrdenDetalle["OrdenTrabajoDetalle"]["idOrdenTrabajoDetalle"];
					$ordenDetallesJSON["descripcionTrabajo"] = utf8_encode($objOrdenDetalle["OrdenTrabajoDetalle"]["descripcionTrabajo"]);
					
					if($objOrdenDetalle["OrdenTrabajoDetalle"]["costoTrabajo"]!=null){
						$ordenDetallesJSON["costoTrabajo"] = round($objOrdenDetalle["OrdenTrabajoDetalle"]["costoTrabajo"],2);
					}else{
						$ordenDetallesJSON["costoTrabajo"] = round($objOrdenDetalle["OrdenTrabajoDetalle"]["costoTrabajo"],2);
					}
					
					$ordenDetallesJSON["indicadorDB"] = "0";
					
		  			$ordenDetallesArrayJSON[$i] = $ordenDetallesJSON;
					$i = $i + 1;	
		 		}
		 		
		 		$this->set("ordenDetallesArrayJSON",$ordenDetallesArrayJSON);
    			
    			$this->fn_cargarCombos();
    			$this->set("objOrden",$objOrden);
    			
    		    //Tomar el mensaje de accion si es que existiese
		    	if($this->Session->check('msjRegistroOrden')){
		     		$this->set('msjRegistroOrden',$this->Session->read("msjRegistroOrden"));
					$this->Session->delete('msjRegistroOrden');
		    	}
    	
    			$this->render('nueva_orden');
    		}else{
    			$this->redirect(array('controller'=>'OrdenesTrabajo','action'=>'consultar_ordenes'));
    		}
    	}else{
    		$this->redirect(array('controller'=>'OrdenesTrabajo','action'=>'consultar_ordenes'));
    	}
    }
    
    public function anular_orden(){
    	$this->layout = 'plantillaPrincipal';
    	if(isset($this->request->query['idOrden'])){
    		$idOrden = $this->request->query['idOrden'];
    	
    		$dataSource = $this->OrdenTrabajo->getDataSource();
    		$dataSource->begin();
    		
    		$objOrden = $this->OrdenTrabajo->find('first',array('conditions' => array('OrdenTrabajo.idOrden' => $idOrden)));
    
    		if(count($objOrden)>0){
    			
    			$objOrden["OrdenTrabajo"]["idUsuarioModifica"] = "admin";
    			$objOrden["OrdenTrabajo"]["fechaModifica"] = date_create()->format('Y-m-d H:i:s');
    			$objOrden["OrdenTrabajo"]["anulado"] = "S";
    			
    			if ($this->OrdenTrabajo->save($objOrden)) {
    				$this->Session->write('msjRegistroOrden',"Se anul&oacute; la orden ".$objOrden["OrdenTrabajo"]["nroOrden"]." exitosamente");
    				$dataSource->commit();
    			}else{
    				$this->Session->write('msjRegistroOrden',"No se pudo anular la orden ".$objOrden["OrdenTrabajo"]["nroOrden"]);
    				$dataSource->rollback();
    			}
    		}else{
    			$dataSource->rollback();
    		}
    	}
    	
    	$this->redirect(array('controller'=>'OrdenesTrabajo','action'=>'consultar_ordenes'));
    }
    
	private function fn_buscar_ordenes_json($condiciones){
    	$arrayJSON = array();
    	
    	$idCliente = $condiciones["idCliente"];
    	$rucDni = $condiciones["rucDni"];
    	$numeroPlaca = $condiciones["numeroPlaca"];
		$idMarcaVehiculo = $condiciones["idMarcaVehiculo"];
		$modelo = $condiciones["modelo"];
		$nroOrden = $condiciones["nroOrden"];
 
		$sql = "select ot.idOrden,
				ot.nroOrden,
				tc.descripcion,
				ot.nroComprobante,
				ot.fechaServicio,
				c.nombreEntidad,
				c.ruc,
				c.dni,
				v.numeroPlaca,
				cdMarcaVehiculo.descripcion,
				v.modelo,
				v.color,
				ot.precioServicio,
				ot.igvServicio,
				ot.totalServicio,
				ot.anulado
				from OrdenesTrabajo ot 
				left join Clientes c on ot.idCliente = c.idCliente
				left join Vehiculos v on ot.idVehiculo = v.idVehiculo
				left join CatalogoDetalle cdMarcaVehiculo on v.idMarcaCatalogo = cdMarcaVehiculo.idCatalogo and v.idMarcaItem = cdMarcaVehiculo.idItem 
				left join CatalogoDetalle tc on ot.idComprobanteCatalogo = tc.idCatalogo and ot.idComprobanteItem = tc.idItem
				where ot.idCliente like '".$idCliente."%' and (c.ruc like '".$rucDni."%' or c.dni like '".$rucDni."%') and 
				v.numeroPlaca like '".$numeroPlaca."%' and ";
		
		if($modelo != ""){
			$sql = $sql." v.modelo like '".$modelo."%' and ";
		}else{
			$sql = $sql." (v.modelo like '".$modelo."%' or v.modelo is null) and ";
		}
		$sql = $sql." ot.nroOrden like '%".$nroOrden."' and (v.idMarcaCatalogo='".$this->Constantes->MARCAS_VEHICULOS."' and v.idMarcaItem like '".$idMarcaVehiculo."%') order by ot.fechaServicio asc";
    	$ordenesTrabajo = $this->OrdenTrabajo->query($sql);
    	
		$i = 0;
    	$dim = count($ordenesTrabajo);
    	
    	$ordenesTrabajoArrayJSON = array();

    	while($i<$dim){
    		
    		$ordenTrabajo = $ordenesTrabajo[$i];
    		$objOrdenJSON = array();
    		
			//Datos de la orden
    		$objOrdenJSON["id"] = $ordenTrabajo["ot"]["idOrden"];
    		$objOrdenJSON["nroOrden"] = $ordenTrabajo["ot"]["nroOrden"];
    		$objOrdenJSON["tipoComprobante"] = $ordenTrabajo["tc"]["descripcion"];
    		$objOrdenJSON["nroComprobante"] = $ordenTrabajo["ot"]["nroComprobante"];
    		$objOrdenJSON["fechaServicio"] = $ordenTrabajo["ot"]["fechaServicio"];

    		//Datos de cliente
    		$objOrdenJSON["nombreCliente"] = $ordenTrabajo["c"]["nombreEntidad"];
    		$valorRuc = $ordenTrabajo["c"]["ruc"];
    		$valorDni = $ordenTrabajo["c"]["dni"];
    		
    		if($valorRuc!=null && $valorRuc!=""){
    			$objOrdenJSON["rucDni"] = $valorRuc;
    		}else if($valorDni!=null && $valorDni!=""){
    			$objOrdenJSON["rucDni"] = $valorDni;
    		}else{
    			$objOrdenJSON["rucDni"] = "";
    		}

    		//Datos de vehiculo
    		$objOrdenJSON["numeroPlaca"] = $ordenTrabajo["v"]["numeroPlaca"];
    		$objOrdenJSON["marcaVehiculo"] = $ordenTrabajo["cdMarcaVehiculo"]["descripcion"];
    		$objOrdenJSON["modelo"] = $ordenTrabajo["v"]["modelo"];
    		$objOrdenJSON["color"] = $ordenTrabajo["v"]["color"];
    		
    		if($ordenTrabajo["ot"]["precioServicio"]!=null){
    			$objOrdenJSON["precioServicio"] = round($ordenTrabajo["ot"]["precioServicio"],2);
    		}else{
    			$objOrdenJSON["precioServicio"] = 0.0;
    		}
    		
    	    if($ordenTrabajo["ot"]["igvServicio"]!=null){
    			$objOrdenJSON["igvServicio"] = round($ordenTrabajo["ot"]["igvServicio"],2);
    		}else{
    			$objOrdenJSON["igvServicio"] = 0.0;
    		}
    		
    	    if($ordenTrabajo["ot"]["totalServicio"]!=null){
    			$objOrdenJSON["totalServicio"] = round($ordenTrabajo["ot"]["totalServicio"],2);
    		}else{
    			$objOrdenJSON["totalServicio"] = 0.0;
    		}
    		
    		$objOrdenJSON["anulado"] = $ordenTrabajo["ot"]["anulado"];
    		
    		if($objOrdenJSON["anulado"] == "S"){
    			$objOrdenJSON["estado"] = "ANULADO";
    		}else{
    			$objOrdenJSON["estado"] = "VIGENTE";
    		}

    		$ordenesTrabajoArrayJSON[$i] = $objOrdenJSON;
    		$i = $i + 1;
    	}

    	return $ordenesTrabajoArrayJSON;
    }
    
	private function fn_cargarCombos(){
		
    	//Traer el listado de clientes
    	$clientes = $this->Cliente->find('all',array('order'=>'Cliente.nombreEntidad asc'));
    	$this->set('clientes',$clientes);
    	
    	//Traer los tipos de comprobantes
    	$conditions = array();
    	$conditions["CatalogoDetalle.idCatalogo"] = $this->Constantes->TIPOS_COMPROBANTES;
    	$tiposComprobantes = $this->CatalogoDetalle->find('all',array('conditions'=>$conditions,'order'=>'CatalogoDetalle.numOrden asc'));
    	$this->set('tiposComprobantes',$tiposComprobantes);
    	
    	//Cargar vehiculos para el combo y json
    	$vehiculos = $this->Vehiculo->find('all',array('order'=>'Vehiculo.numeroPlaca asc'));
    	$this->set('vehiculos',$vehiculos);
    	
		$i = 0;
		$dim = count($vehiculos);
    	$vehiculosArrayJSON = array();
		while($i<$dim){
			$objVehiculo = $vehiculos[$i];	
 			$objVehiculoJSON = array();
			$objVehiculoJSON["idVehiculo"] = $objVehiculo["Vehiculo"]["idVehiculo"];
			$objVehiculoJSON["numeroPlaca"] = $objVehiculo["Vehiculo"]["numeroPlaca"];
  			$objVehiculoJSON["color"] = $objVehiculo["Vehiculo"]["color"];
    		$objVehiculoJSON["anio"] = $objVehiculo["Vehiculo"]["anio"];
    		$objVehiculoJSON["marcaVehiculo"] = $objVehiculo["MarcaVehiculo"]["descripcion"];
    		$objVehiculoJSON["modeloVehiculo"] = $objVehiculo["Vehiculo"]["modelo"];
    		if($objVehiculoJSON["modeloVehiculo"] == null){
    			$objVehiculoJSON["modeloVehiculo"] = "";
    		}
    		$objVehiculoJSON["tipoCombustible"] = $objVehiculo["Combustible"]["descripcion"];
    			
  			$vehiculosArrayJSON[$i] = $objVehiculoJSON;
			$i = $i + 1;	
 		}
 		
 		$this->set("vehiculosArrayJSON",$vehiculosArrayJSON);
    	
    	//Traer el listado de marcas de vehiculos
    	$contidions = array();
    	$conditions["CatalogoDetalle.idCatalogo"] = $this->Constantes->MARCAS_VEHICULOS;
    	$marcasVehiculos = $this->CatalogoDetalle->find('all',array('conditions'=>$conditions,'order'=>'CatalogoDetalle.descripcion asc'));
    	$this->set('marcasVehiculos',$marcasVehiculos);
    	
    	//Tomar el parametro de igv
    	$parametroIgv = $this->SistemaParametro->find('first',array('conditions' => array('SistemaParametro.idParametro' => $this->Constantes->ID_PARAMETRO_IGV)));
    	if(count($parametroIgv)>0){
    		$valorIgv = $parametroIgv["SistemaParametro"]["valorParametro"];
    	}else{
    		$valorIgv = "18";
    	}
    	
    	$this->set('valorIgv',$valorIgv);
    }

}
?>